//求n的阶乘。至少使用递归函数完成一次。

package main

import (
	"fmt"
)

func factorialA(n int) int {
	var sum = 1
	for i := 1; i <= n; i++ {
		sum *= i
	}
	return sum
}

func factorialB(n int) int {
	if n == 1 {
		return 1
	}
	return factorialB(n-1) * n
}

func factorialC(n int, sum int) int {
	if n == 1 {
		return sum
	}
	sum *= n
	return factorialC(n-1, sum)
}

func main() {
	fmt.Printf("factorialA(20): %v\n", factorialA(20))
	fmt.Printf("factorialB(20): %v\n", factorialB(20))
	fmt.Printf("factorialC(20): %v\n", factorialC(20, 1))
}
